package cn.edu.sgu.www.mhxysy.service.role;

import cn.edu.sgu.www.mhxysy.pager.Pager;
import cn.edu.sgu.www.mhxysy.dto.role.RoleAccountDTO;
import cn.edu.sgu.www.mhxysy.entity.role.RoleAccount;
import cn.edu.sgu.www.mhxysy.vo.role.RoleAccountVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface RoleAccountService {

	/**
	 * 导出数据
	 * @throws UnsupportedEncodingException 方法抛出的异常
	 */
	void exportData() throws UnsupportedEncodingException;

	/**
	 * 导入数据
	 * @param file MultipartFile
	 */
	@Transactional(rollbackFor = Exception.class)
	void importData(MultipartFile file);

	/**
	 * 添加角色
	 * @param roleAccountDTO 角色信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void insert(RoleAccountDTO roleAccountDTO);

	/**
	 * 通过ID批量删除角色
	 * @param ids 角色ID列表
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteByIds(List<String> ids);

	/**
	 * 通过ID修改角色信息
	 * @param roleAccountDTO 角色信息
	 */
	void updateById(RoleAccountDTO roleAccountDTO);

	/**
	 * 查询所有角色
	 * @return List<RoleAccount>
	 */
	List<RoleAccount> selectAll();

	/**
	 * 通过ID查询账号信息
	 * @param roleId 角色ID
	 * @return RoleAccount
	 */
	RoleAccount selectById(String roleId);

	/**
	 * 通过ID查询角色详情
	 * @param roleId 角色ID
	 * @return RoleAccountVO
	 */
	RoleAccountVO selectRoleDetails(String roleId);

	/**
	 * 分页查询角色列表
	 * @param pager 分页参数
	 * @return Page<RoleAccount>
	 */
    Page<RoleAccount> selectByPage(Pager<RoleAccount> pager);
}